cmake_minimum_required(VERSION 3.20)
project(ZCYLS)

set(CMAKE_CXX_STANDARD 14)


###############################################################################
add_executable(SelectionSort 2-SelectionSort+BubbleSort/SelectionSort.cpp)

add_executable(BubbleSort 2-SelectionSort+BubbleSort/BubbleSort.cpp)

add_executable(InsertionSort 3-InsertionSort/InsertionSort.cpp)

# 复习昨天的内容
add_executable(SelectionSort1 2-SelectionSort+BubbleSort/SelectionSort1.cpp)
add_executable(SelectionSort2 2-SelectionSort+BubbleSort/SelectionSort2.cpp)

add_executable(BubbleSort1 2-SelectionSort+BubbleSort/BubbleSort1.cpp)
add_executable(BubbleSort2 2-SelectionSort+BubbleSort/BubbleSort2.cpp)
add_executable(BubbleSort3 2-SelectionSort+BubbleSort/BubbleSort3.cpp)

add_executable(BubbleSort4 2-SelectionSort+BubbleSort/BubbleSort4.cpp)
add_executable(BubbleSort5 2-SelectionSort+BubbleSort/BubbleSort5.cpp)

add_executable(InsertionSort1 3-InsertionSort/InsertionSort1.cpp)

add_executable(ShellSort 3-InsertionSort/ShellSort.cpp)

###############################################################################
add_executable(GetMax 4-Recursion/GetMax.cpp)
add_executable(GetMax2 4-Recursion/GetMax2.cpp)

add_executable(MergeSort 5-MergeSort/MergeSort.cpp)
add_executable(MergeSort2 5-MergeSort/MergeSort2.cpp)


add_executable(QuickSort 6-QuickSort/QuickSort.cpp)

add_executable(RandomNumber 7-RandomNumber/RandomNumber.cpp)

# 2 这个版本是没有问题的。
add_executable(QuickSort2 6-QuickSort/QuickSort2.cpp)
add_executable(QuickSort3 6-QuickSort/QuickSort3.cpp)
# 重构 QuickSort3 的划分函数。另外 3 这个版本的快排是有问题的。
# 在 4 版本中解决了这个问题。问题出在了: 不能 + 1。
add_executable(QuickSort4 6-QuickSort/QuickSort4.cpp)
# 这个 5 版本是我自己写的, 没有问题。
add_executable(QuickSort5 6-QuickSort/QuickSort5.cpp)
# 6 版本是对 5 版本的 partition();函数的一些改进, 而且 partition();函数可以进一步改进, 在 7 版本
# 我会进行新的设计在 partition();函数中。
add_executable(QuickSort6 6-QuickSort/QuickSort6.cpp)
# 7 版本我通过画图发现了 6 版本对 5 版本的 partition();函数 改进是错误的。这个错误我在 7 版本进行改进了。
# 7 这个版本是没有问题的。
add_executable(QuickSort7 6-QuickSort/QuickSort7.cpp)
# 8 版本, 我自己写的最终的快排版本。
add_executable(QuickSort8 6-QuickSort/QuickSort8.cpp)


add_executable(HeapSort 8-HeapSort/HeapSort.cpp)
# 在 3 版本中, 对 heapSort();的堆排那里想进行一下调整。2 这个版本是正确的。
add_executable(HeapSort2 8-HeapSort/HeapSort2.cpp)
# 3 这个版本我对 heapSort();进行了一些改进。这个版本经过多次测试, 是正确的。
add_executable(HeapSort3 8-HeapSort/HeapSort3.cpp)
# 4 这个版本是对 3 版本的 heapSort(); 进一步改进。多次运行没有问题, 是正确的。
add_executable(HeapSort4 8-HeapSort/HeapSort4.cpp)

# 5 这个版本是我睡了一觉早上, 写出来的。没有问题, 运行正确。而且比原来的版本也好一些。
add_executable(HeapSort5 8-HeapSort/HeapSort5.cpp)
# 6 这个版本我自己设计了一种构建大顶堆的算法。这个 heapInsert();的设计参考了 heapify();的设计。
# 运行是没有问题的。
add_executable(HeapSort6 8-HeapSort/HeapSort6.cpp)
add_executable(HeapSort7 8-HeapSort/HeapSort7.cpp)
###############################################################################
# 排序复习。
add_executable(Sort 9-sort/Sort.cpp)
add_executable(Sort1 9-sort/Sort1.cpp)
###############################################################################
# 标准库提供的排序、合并、分区算法。
add_executable(Partition1 10-sort-merge-partition/Partition1.cpp)
add_executable(Partition2 10-sort-merge-partition/Partition2.cpp)
add_executable(Partition3 10-sort-merge-partition/Partition3.cpp)
# 标准库分区算法最终方案: partition();
add_executable(Partition4 10-sort-merge-partition/Partition4.cpp)
###############################################################################
# 排序复习
add_executable(Sort2 9-sort/Sort2.cpp)
# 标准库的堆
add_executable(Heap1 9-sort/Heap1.cpp)
# 自己实现的堆(大顶堆), 没有问题。
add_executable(Heap2 9-sort/Heap2.cpp)
# 3 版本将小顶堆也实现了, 同时也实现了 heapInsert(); 这是一个和 heapify();反着来的构建一个大顶堆(或者小顶堆)。
add_executable(Heap3 9-sort/Heap3.cpp)
###############################################################################
# 哈希表
add_executable(HashMap1 11-HashMap/HashMap1.cpp)
###############################################################################
# 链表 LinkedList
add_executable(LinkedList1 13-LinkedList/LinkedList1.cpp)





